package menus;

import herramientas.BitUtil;
import bitclub.Proveedor;
import java.util.List;

/**
 * @author Bit Company
 */
public class OpcionesProveedores {

    /**
     * Da de alta un Proveedor
     */
    public static Proveedor opcionProveedoresDarAlta() {
        Proveedor proveedor;
        BitUtil.borra();

        //Cogemos todos los datos uno a uno
        System.out.println("NUEVO PROVEEDOR");
        System.out.println("____________________");
        String nombre = BitUtil.dameCadena("Nombre: ", 20);
        String apellidos = BitUtil.dameCadena("Apellidos: ", 30);
        String nomEmpresa = BitUtil.dameCadena("Nombre empresa: ", 30);
        String cif = BitUtil.dameEnteroFijoNoVacio("CIF: ", 8);
        String mail = BitUtil.dameCadena("E-mail: ", 40);
        String telMovil = BitUtil.dameEnteroFijo("Telefono: ", 9);
        String direccion = BitUtil.dameCadena("Dirección: ", 50);
        String localidad = BitUtil.dameCadena("Localidad: ", 30);
        String cp = BitUtil.dameEnteroFijo("Codigo postal: ", 5);

        //Creamos el proveedor con todos los datos recopilados
        proveedor = new Proveedor(nombre, apellidos, nomEmpresa, cif, mail, telMovil, direccion, localidad, cp);

        //Borramos pantalla, mostramos el trabajador completo y pedimos confirmación
        BitUtil.borra();
        System.out.println(proveedor.toString());
        boolean confirmado = BitUtil.dameConfirmacion("Dar de alta este proveedor? (S/N) ");

        if (confirmado) {
            proveedor.nuevo();
            return proveedor;
        } else {
            return null;
        }
    }

    /**
     *             
    
     * Ver datos de trabajador
     * @param trabajador 
     */
    public static void opcionProveedoresVer(Proveedor proveedor) {
        BitUtil.borra();
        System.out.println(proveedor.toString());
        BitUtil.esperaEnter();
    }

    /**
     * Edita los datos de un trabajador
     */
    public static Proveedor opcionProveedoresEditar(Proveedor proveedor) {
        int respuesta = 0;
        boolean algunCambio = false;

        Proveedor copia = new Proveedor(proveedor.getId(), proveedor.getNombre(), proveedor.getApellidos(),
                proveedor.getNombredeEmpresa(), proveedor.getCif(), proveedor.getMail(),
                proveedor.getTel_movil(), proveedor.getDireccion(), proveedor.getLocalidad(),
                proveedor.getCodigoPostal());

        do {
            BitUtil.borra();
            respuesta = BitUtil.muestraMenu("EDITAR PROVEEDOR", new String[]{"Nombre", "Apellidos", "Nombre Empresa", "CIF", "Mail", "Tel_movil", "Dirección", "Localidad", "C.P."});
            System.out.println("\n");
            switch (respuesta) {
                case 1:
                    System.out.println("Nombre: " + proveedor.getNombre());
                    proveedor.setNombre(BitUtil.dameCadenaNoVacio("Nuevo Nombre: ", 20));
                    algunCambio = true;
                    break;
                case 2:
                    System.out.println("Apellidos: " + proveedor.getApellidos());
                    proveedor.setApellidos(BitUtil.dameCadenaNoVacio("Nuevo Apellidos: ", 30));
                    algunCambio = true;
                    break;
                case 3:
                    System.out.println("Nombre de Empresa: " + proveedor.getNombredeEmpresa());
                    proveedor.setNombredeEmpresa(BitUtil.dameCadena("Nuevo Nombre de Empresa: ", 30));
                    algunCambio = true;
                    break;
                case 4:
                    System.out.println("CIF: " + proveedor.getCif());
                    proveedor.setCif(BitUtil.dameEnteroFijoNoVacio("Nuevo CIF: ", 8));
                    algunCambio = true;
                    break;
                case 5:
                    System.out.println("Email: " + proveedor.getMail());
                    proveedor.setMail(BitUtil.dameCadena("Nuevo E-mail: ", 40));
                    algunCambio = true;
                    break;
                case 6:
                    System.out.println("Telefono: " + proveedor.getTel_movil());
                    proveedor.setTel_movil(BitUtil.dameEnteroFijo("Nuevo Telefono: ", 9));
                    algunCambio = true;
                    break;
                case 7:
                    System.out.println("Direccion: " + proveedor.getDireccion());
                    proveedor.setDireccion(BitUtil.dameCadenaNoVacio("Nueva Dirección: ", 50));
                    algunCambio = true;
                    break;
                case 8:
                    System.out.println("Localidad: " + proveedor.getLocalidad());
                    proveedor.setLocalidad(BitUtil.dameCadena("Nueva Localidad: ", 30));
                    algunCambio = true;
                    break;
                case 9:
                    System.out.println("Codigo Postal: " + proveedor.getCodigoPostal());
                    proveedor.setCodigoPostal(BitUtil.dameEnteroFijo("Nuevo Codigo postal: ", 5));
                    algunCambio = true;
                    break;
            }
        } while (respuesta != 0);

        if (algunCambio) {
            BitUtil.borra();
            System.out.println(proveedor.toString());
            System.out.println("\n");
            boolean confirmar = BitUtil.dameConfirmacion("Desea guardar estos cambios? (S/N) ");
            if (confirmar) {
                proveedor.actualizar();
            } else {
                return copia;
            }
        }
        return proveedor;
    }

    /**proveedor=Proveedor.seleccionarPorId(proveedor.getId());
     * Da de baja un trabajador o de alta si ya estaba de baja
     * @param trabajador 
     */
    public static void opcionProveedoresDarBaja(Proveedor proveedor) {
        boolean borrar = BitUtil.dameConfirmacion("Quiere eliminar este proveedor? (S/N) ");
        if (borrar) {
            if (Proveedor.existeProveedorEnArticulo(proveedor.getId())) {
                System.out.println("No se puede borrar ya que existen articulos con dicho proveedor");
                BitUtil.esperaEnter();
            } else {
                proveedor.eliminar();
                System.out.println("\nEl proveedor ha sido eliminado.\n");
                BitUtil.esperaEnter();
            }
        }
    }

    /**
     * Nos permite seleccionar un proveedor
     * ((probablemente no haya tantos proveedores como para hacer una búsqueda))
     */
    public static Proveedor seleccionarProveedor() {
        Proveedor proveedor = null;
        String nombre;
        int respuesta;

        do {
            BitUtil.borra();
            nombre = "";
            respuesta = BitUtil.muestraMenu("Seleccion de Proveedor", new String[]{"Por CIF", "Por Nombre", "Todos"}, "No Seleccionar ninguno");
            switch (respuesta) {
                case 1:
                    BitUtil.borra();
                    System.out.println(BitUtil.muestraSubrayado("Seleccion de Proveedor", "-") + "\n");
                    String cif = BitUtil.dameCadena("Introduzca CIF: ", 8);
                    proveedor = Proveedor.seleccionarPorCif(cif);
                    if (proveedor == null) {
                        System.out.println("\nNo hay proveedores con dicho criterio.\n");
                        BitUtil.esperaEnter();
                    } else {
                        respuesta = 0;
                    }
                    break;
                case 2:
                    BitUtil.borra();
                    System.out.println(BitUtil.muestraSubrayado("Seleccion de Proveedor", "-") + "\n");
                    nombre = BitUtil.dameCadena("Introduzca nombre de empresa: ", 30);
                case 3:
                    List<Proveedor> listProveedor = (List) Proveedor.seleccionarPorNombre(nombre);
                    if (listProveedor.isEmpty()) {
                        System.out.println("\nNo hay proveedores con dicho criterio.\n");
                        BitUtil.esperaEnter();
                    } else {
                        String[] opciones = new String[listProveedor.size()];
                        for (int i = 0; i < listProveedor.size(); i++) {
                            opciones[i] = listProveedor.get(i).getNombredeEmpresa();
                        }
                        BitUtil.borra();
                        int seleccion = BitUtil.muestraMenu("Seleccion de Proveedor", opciones, "Ninguno");
                        if (seleccion != 0) {
                            proveedor = listProveedor.get(seleccion - 1);
                            respuesta = 0;
                        }
                    }
                    break;
            }
        } while (respuesta != 0);

        return proveedor;
    }
}
